package com.zzg.springboot.controller;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.zzg.springboot.entity.ParameObject;

/**
 * 
 * @ClassName:  ValidateController   
 * @Description: springboot 集成validate 验证框架  
 * @author: 世纪伟图 -zzg
 * @date:   2018年11月5日 下午3:46:08   
 *     
 * @Copyright: 2018 www.digipower.cn 
 * 注意：本内容仅限于深圳市世纪伟图科技开发有限公司内部使用，禁止用于其他的商业目的
 */
@Controller
@RequestMapping("/api/springmvc/validate")
public class ValidateController {
	
	/**
	 * 
	 * @Title: validateOne   
	 * @Description: @Validated 或者  @Valid 注解时，当验证不通过会返回400，并且抛出"org.springframework.validation.BindException"异常<br>
     * 这种交互不利于前端获取校验信息,可以配合BindingResult对校验结果进行封装之后再返回给前端。
	 * @param: @param parame      
	 * @return: void      
	 * @throws
	 */
	@RequestMapping(value="/validateOne", method={RequestMethod.POST})
	@ResponseBody
	public ParameObject validateOne(@RequestBody @Valid ParameObject parame){
		System.out.println("springmvc 对象绑定：" + parame.getName() + "," + parame.getAge() +"," + parame.getId());
		return parame;
	}
	
	/**
	 * 
	 * @Title: validateTwo   
	 * @Description: 使用@Validated 或者  @Valid 同时配合使用BindingResult，对校验结果进行封装之后再返回给前端，方便交互
	 * @param: @param parame      
	 * @return: void      
	 * @throws
	 */
	@RequestMapping(value="/validateTwo", method={RequestMethod.POST})
	@ResponseBody
	public ParameObject validateTwo(@RequestBody @Valid ParameObject parame){
		System.out.println("springmvc 对象绑定：" + parame.getName() + "," + parame.getAge() +"," + parame.getId());
		return parame;
	}
	
	

}
